package com.hzncc.flowable_diboot.payment.entity;

import java.time.LocalDateTime;

import jakarta.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import com.diboot.core.entity.BaseModel;
import com.diboot.core.binding.query.BindQuery;
import com.diboot.core.binding.query.Comparison;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * 回款凭证 Entity 定义
 *
 * @author MyName
 * @version 1.0
 * @date 2024-10-25
 * Copyright © MyCorp
 */
@TableName("mdl_payment_cert")
@Getter
@Setter
@Accessors(chain = true)
public class PaymentCert extends BaseModel {
    private static final long serialVersionUID = 1682823137719011648L;
    /**
     * 租户
     */
    @NotNull(message = "租户不能为空")
    @TableField()
    private String tenantId;

    /**
     * 回款登记ID
     */
    @Length(max = 32, message = "回款登记ID长度应小于32")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String paymentRegisterId;

    /**
     * SAP会计凭证号
     */
    @Length(max = 100, message = "SAP会计凭证号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String sapCertCode;

    /**
     * 会计年度
     */
    @Length(max = 100, message = "会计年度长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField(value = "`year`")
    private String year;

    /**
     * 凭证日期
     */
    @TableField()
    private LocalDateTime certDate;

    /**
     * 过账日期
     */
    @TableField()
    private LocalDateTime postDate;

    /**
     * 会计期间
     */
    @Length(max = 100, message = "会计期间长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String accountingPeriod;

    /**
     * 凭证类型
     */
    @Length(max = 100, message = "凭证类型长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String certType;

    /**
     * 凭证抬头
     */
    @Length(max = 100, message = "凭证抬头长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String certTitle;

    /**
     * 货币码
     */
    @Length(max = 100, message = "货币码长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String currencyCode;

    /**
     * sap响应消息
     */
    @Length(max = 200, message = "sap响应消息长度应小于200")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String sapResponseMsg;

    /**
     * sap推送状态 0 未推送 1 失败 2 成功
     */
    @Length(max = 200, message = "sap响应消息长度应小于200")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private Integer sapPushStatus;

    /**
     * 账户分配
     */
    @TableField()
    private String dis;

    /**
     * 合同编号
     */
    @TableField()
    private String contractCode;

    /**
     * 销售人员
     */
    @TableField()
    private String salesperson;

    /**
     * 客户名称
     */
    @TableField()
    private String customerName;

    /**
     * 成本中心
     */
    @TableField()
    private String costCenter;

    /**
     * 销售部门
     */
    @TableField()
    private String salesDept;

    /**
     * 手续费
     */
    @TableField()
    private String fees;

    /**
     * 公司合同类型
     */
    @TableField
    private String companyContractType;
}